首页/ 学科题库/ javascript/ JavaScript 模块化(ES Modules)
javascript 实战教程

JavaScript 模块化(ES Modules)

2026-05-16 约 8 分钟 juanwangdev

JavaScript 模块化(ES Modules)

ES Modules 是 JavaScript 官方模块标准,支持静态分析和 tree-shaking。

导出语法

命名导出

JavaScript
// 单个导出
export const name = 'Alice';
export function greet() { return 'Hello'; }
export class Person {}

// 批量导出
const age = 25;
const job = 'Engineer';
export { age, job };

// 重命名导出
export { age as userAge };

默认导出

JavaScript
export default function() {
  console.log('Default export');
}

// 等价于
function main() {}
export default main;

导入语法

命名导入

JavaScript
import { name, greet } from './module.js';
import { age as userAge } from './module.js';  // 重命名
import * as utils from './module.js';          // 全部导入

默认导入

JavaScript
import main from './module.js';
import main, { name, greet } from './module.js';  // 混合导入

动态导入

JavaScript
// 返回 Promise
const module = await import('./module.js');

// 条件加载
if (condition) {
  const { heavyFeature } = await import('./heavy.js');
}

导出导入结合

JavaScript
// 全部重新导出
export * from './utils.js';

// 部分重新导出
export { name, greet } from './module.js';

// 重命名导出
export { age as userAge } from './module.js';

模块特性

特性说明
严格模式自动启用 'use strict'
作用域模块内独立作用域,不污染全局
this 值模块顶层 this 为 undefined
执行时机导入的模块仅执行一次

循环依赖处理

JavaScript
// a.js
import { b } from './b.js';
export const a = 'a';

// b.js
import { a } from './a.js';
export const b = 'b';

循环依赖时,ES Modules 保留导入值的引用,但未初始化时访问会报错

浏览器中使用

HTML
<script type="module" src="./main.js"></script>
<script type="module">
  import { greet } from './utils.js';
  greet();
</script>

要点总结

  • export 导出,import 导入,语法静态可分析
  • 默认导出每个模块仅一个,命名导出可有多个
  • 动态导入 import() 返回 Promise,按需加载
  • 模块自动严格模式,顶层 this 为 undefined
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 JavaScript 性能优化(内存管理、防抖节流) 下一篇 → JavaScript 生成器与迭代器